unit UPesquisaEmissaoPedido;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, UFormPesquisa, DB, DBTables, StdCtrls, Grids, DBGrids, Buttons,
  ExtCtrls, CheckLst, Mask, ToolEdit, DBCtrls;

type
  TFPesquisaEmissaoPedido = class(TFormPesquisa)
    Label2: TLabel;
    Label9: TLabel;
    Label6: TLabel;
    Label10: TLabel;
    Label1: TLabel;
    Label3: TLabel;
    DBLCBFornecedor: TDBLookupComboBox;
    DEDataIni: TDateEdit;
    DEDataFim: TDateEdit;
    CkBTodasEmpresas: TCheckBox;
    CLBEmpresas: TCheckListBox;
    EPedidoIni: TEdit;
    EPedidoFim: TEdit;
    DSFornecedor: TDataSource;
    RGSituacaoPedido: TRadioGroup;
    RGSituacaoItempedido: TRadioGroup;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure BtnConsultarClick(Sender: TObject);
    procedure CkBTodasEmpresasClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure BtnLimparClick(Sender: TObject);
    procedure BtnSelecionarClick(Sender: TObject);
    procedure BtnImprimirClick(Sender: TObject);
    procedure EPedidoIniExit(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FPesquisaEmissaoPedido: TFPesquisaEmissaoPedido;
  Selecionou : Boolean;

implementation

uses Pedido, UDmGestao,UGeral, NotaPedido;

{$R *.dfm}

procedure TFPesquisaEmissaoPedido.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  if FPedido <> nil then
   begin
     FPedido.Enabled:=true;
     FPedido.Show;
   end;           
  FPesquisaEmissaoPedido:=nil;
  inherited;
end;

procedure TFPesquisaEmissaoPedido.BtnConsultarClick(Sender: TObject);
begin
  Selecionou:=False;
  QPesquisa.close;
  QPesquisa.SQL.Clear;
  QPesquisa.SQL.Add(' Select Distinct(PED_CODIGO),PED_DATA,PED_SITUACAO,FORN_RAZAO,Itens_Ped_Situacao ');
  QPesquisa.SQL.Add(' From Pedido ');
  QPesquisa.SQL.Add(' Inner join FORNECEDOR on PEDIDO.Ped_Fornecedor = Fornecedor.Forn_codigo ');
  QPesquisa.SQL.Add(' Inner join ITENSPEDIDO on PEDIDO.PED_CODIGO = ITENSPEDIDO.ITENS_PED_PEDIDO ');
  QPesquisa.SQL.Add(' Where (PED_CODIGO=PED_CODIGO) ');

  if (EPedidoIni.Text <> '')  and (EPedidoFim.Text <> '' ) then
  begin
   QPesquisa.SQL.Add(' And (Ped_Codigo between :PedI and :PedF) ');
   QPesquisa.ParamByName('PedI').AsString:=EPedidoIni.Text;
   QPesquisa.ParamByName('PedF').AsString:=EPedidoFim.Text;
  end;

  if (DEDataIni.Date <> 0) and (DEDataFim.Date <> 0) then
  begin
   QPesquisa.SQL.Add(' and (Ped_Data  between :DataI and :DataF ) ');
   QPesquisa.ParamByName('DataI').AsDate:=DEDataIni.Date;
   QPesquisa.ParamByName('DataF').AsDate:=DEDataFim.Date;
  end;

  if RGSituacaoPedido.ItemIndex <> 2 then
  begin
   QPesquisa.SQL.Add(' And (Ped_Situacao = :SitPed)');
   QPesquisa.ParamByName('SitPed').AsInteger:=RGSituacaoPedido.ItemIndex;
  end;

  if RGSituacaoItempedido.ItemIndex <> 2 then
  begin
   QPesquisa.SQL.Add(' And (Itens_Ped_Situacao = :SitItemPed)');
   QPesquisa.ParamByName('SitItemPed').AsInteger:=RGSituacaoItempedido.ItemIndex;
  end;

  if DBLCBFornecedor.Text <> '' then
  begin
   QPesquisa.SQL.Add(' And (Ped_Fornecedor = :Forn)');
   QPesquisa.ParamByName('Forn').AsInteger:= DBLCBFornecedor.KeyValue;
  end;
  QPesquisa.Open;
  inherited;
end;

procedure TFPesquisaEmissaoPedido.CkBTodasEmpresasClick(Sender: TObject);
Var
 i : Integer;
begin
  inherited;
 for i := 0 to CLBEmpresas.Items.Count - 1 do
  begin
   if StrToInt(Copy(CLBEmpresas.Items.Strings[i],1,pos('-',CLBEmpresas.Items.Strings[i])- 1)) = Codigoempresa then
    CLBEmpresas.Checked[i]:=true
   else
    CLBEmpresas.Checked[i]:=CkBTodasEmpresas.Checked;
  end;
end;

procedure TFPesquisaEmissaoPedido.FormCreate(Sender: TObject);
begin
  inherited;
 QPesquisa.Close;
 QPesquisa.SQL.Clear;
 QPesquisa.SQL.Add('Select Emp_Codigo,Emp_Fantasia from empresa');
 QPesquisa.Open;
 QPesquisa.First;
 CLBEmpresas.Items.Clear;
 while not(QPesquisa.Eof) do
 begin
  CLBEmpresas.Items.Add(QPesquisa.fieldByname('Emp_Codigo').AsString + '-' + QPesquisa.fieldByname('Emp_Fantasia').AsString );
  QPesquisa.Next;
 end;
 CkBTodasEmpresasClick(Sender);
 QPesquisa.Close;
end;

procedure TFPesquisaEmissaoPedido.BtnLimparClick(Sender: TObject);
begin
  inherited;
 EPedidoIni.Text:='';
 EPedidoFim.Text:='';
 DEDataIni.Date:=0;
 DEDataFim.Date:=0;
 DBLCBFornecedor.KeyValue:=null;
 RGSituacaoPedido.ItemIndex:=2;
 RGSituacaoItempedido.ItemIndex:=2;
end;

procedure TFPesquisaEmissaoPedido.BtnSelecionarClick(Sender: TObject);
begin
  inherited;
  if FPedido = nil then
  begin
   Application.CreateForm(TFPedido, FPedido);
   FPedido.show;
  end;
  FPedido.QPedido.Close;
  FPedido.QPedido.Open;
  FPedido.QPedido.Locate('Ped_Codigo',QPesquisa.fieldByname('PED_CODIGO').AsString,[loCaseInsensitive]);
  Self.Close;
end;

procedure TFPesquisaEmissaoPedido.BtnImprimirClick(Sender: TObject);
begin
  inherited;
  Application.CreateForm(TFNotaPedido, FNotaPedido);
    with FNotaPedido do
     begin
      QEmpresa.Close;
      QEmpresa.Open;
      QEmpresa.Locate('Emp_Codigo',Codigoempresa,[locaseInsensitive]);

      QRelatorio.close;
      QRelatorio.SQL.Clear;
      QRelatorio.SQL.Add('Select Prod_Codigo,Prod_DescricaoEnt, Prod_Referencia, Prod_UnidSaida, Itens_Ped_Quantidade,Itens_Ped_Valor,Ped_Data,Ped_Obs,PED_DATAENTREGA,PED_CODIGO,Ped_Situacao,FORN_RAZAO,Forn_Fone,FORN_CONTATO,Trans_Nome ');
      QRelatorio.SQL.Add('From Pedido Inner join ItensPedido on ITENS_PED_PEDIDO = PED_CODIGO inner join Produto on Itens_Ped_Produto = Prod_Codigo left join Transportadora on Ped_Transportadora = Trans_Codigo Left join Fornecedor on Ped_Fornecedor = Forn_codigo ');
      QRelatorio.SQL.Add(' Where (PED_Codigo = :Ped) ');
      QRelatorio.ParamByName('Ped').AsInteger:=QPesquisa.FieldByName('PED_CODIGO').AsInteger;
      QRelatorio.Open;
      QuickRep1.DataSet:=QRelatorio;      
      QuickRep1.Prepare;
      QuickRep1.Preview;
      close;
     end;

end;

procedure TFPesquisaEmissaoPedido.EPedidoIniExit(Sender: TObject);
begin
  inherited;
  EPedidoFim.Text:=EPedidoIni.Text;
end;

end.
